package br.ifrn.tads.poo.banco.agencia;
import java.util.ArrayList;
import java.util.Date;
import java.util.ListIterator;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

import br.ifrn.tads.poo.banco.agencia.Conta;
import br.ifrn.tads.poo.banco.cliente.Cliente;


public class Agencia {
	private int numero; //numero da agencia
	private String nome;
	private String endereco;
	private String nomeGerente;
	public ArrayList<Conta> contas=new ArrayList<Conta>(); //Contas
	//static ListIterator<Conta> listaConta = contas.listIterator(); //ferramenta de navegar pelo arraylist de contas
	
	public Agencia (){
		//construtor basico
	}
	
	public void criarConta(Cliente c, int numConta, int limConta, String tipoConta){
		if (tipoConta.equalsIgnoreCase("poupanca")){
			ContaPoupanca conta = new ContaPoupanca();
			conta.setNumero(numConta);
			Calendar data = Calendar.getInstance(TimeZone.getDefault());
			//int ano = data.get(Calendar.DATE);
	        //int mes = data.get(Calendar.MONTH) + 1;
			conta.setAniversario(data);
			
//			while (listaConta.hasNext()) {
//				if (listaConta.next().getCliente().getConta()!=numConta){
//					conta.setNumero(numConta);
//				}//adicionar try catch aqui caso o numero da conta ja exista
//			}
			
			conta.setCliente(c);
			contas.add(conta);
		}
		if (tipoConta.equalsIgnoreCase("corrente")){
			ContaCorrente conta = new ContaCorrente();
			conta.setCliente(c);
			conta.setLimite(limConta);
//			while (listaConta.hasNext()) {
//				if (listaConta.next().getCliente().getConta()!=numConta){
//					conta.setNumero(numConta);
//				}//adicionar try catch aqui caso o numero da conta ja exista
			contas.add(conta);
//			}
		}
	} 
				
	
	public Conta buscarConta(String nome){
		Conta retorno=null;
		for (Conta a : contas){
			if (a.getCliente().getNome().equalsIgnoreCase(nome)){
				retorno = a;
			}
		}
//		while (listaConta.hasNext()) {
//			if (listaConta.next().getCliente().getNome().equalsIgnoreCase(nome)){
//				retorno = listaConta.next();
//			}
//		}
		return retorno;
	}
	public Conta buscarConta(int numero){//metodo novo para pegar conta baseada no numero
		Conta retorno=null;
		for (Conta a : contas){
			if (a.getCliente().getConta()==numero){
				retorno = a;
			}
		}
		return retorno;
	}
	
	public Cliente buscarCliente(String nome){//metodo novo para pegar conta baseada no nome
		Cliente retorno=null;
		for (Conta a : contas){
			if (a.getCliente().getNome().equalsIgnoreCase(nome)){
				retorno = a.getCliente();
			}
		}
		return retorno;
	}

	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getNomeGerente() {
		return nomeGerente;
	}

	public void setNomeGerente(String nomeGerente) {
		this.nomeGerente = nomeGerente;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	

	
}
